package com.wzs.rpc.registry;

import com.wzs.rpc.config.RegistryConfig;
import com.wzs.rpc.model.ServiceMetaInfo;

import java.util.List;

public interface Registry {
    /**
     * 初始化
     */
    void init(RegistryConfig registryConfig);

    /**
     * 初始化
     * heartBeat：是否开启心跳检测
     */
    void init(RegistryConfig registryConfig, boolean heartBeat);

    /**
     * 心跳监测（使用服务节点自动续期的实现方式）
     */
    void heartBeat();

    /**
     * 注冊服务
     */
    void register(ServiceMetaInfo serviceMetaInfo) throws Exception;

    /**
     * 注销服务
     */
    void unRegister(ServiceMetaInfo serviceMetaInfo) throws Exception;

    /**
     * 拉取服务节点
     */
    List<ServiceMetaInfo> getService(String serviceKey);

    /**
     * 服务销毁
     */
    void destroy();

    /**
     * 监听
     */
    void watch(String registerKey, ServiceMetaInfo serviceMetaInfo);
}
